By default, Gnus tries to make sure that you don't have to read the same article more than once by utilizing the crossposting mechanism (see Crosspost Handling). However, that simple and efficient approach may not work satisfactory for some users for various reasons.
Xref header. This is evil and not very
common.Xref header in the .overview data bases. This is evil and all
too common, alas.I'm sure there are other situations where Xref
handling fails as well, but these four are the most common
situations.
If, and only if, Xref handling fails for you,
then you may consider switching on duplicate
suppression. If you do so, Gnus will remember the
Message-IDs of all articles you have read or
otherwise marked as read, and then, as if by magic, mark them as
read all subsequent times you see them—in all
groups. Using this mechanism is quite likely to be somewhat
inefficient, but not overly so. It's certainly preferable to
reading the same articles more than once.
Duplicate suppression is not a very subtle instrument. It's more like a sledge hammer than anything else. It works in a very simple fashion—if you have marked an article as read, it adds this Message-ID to a cache. The next time it sees this Message-ID, it will mark the article as read with the ‘M’ mark. It doesn't care what group it saw the article in.
gnus-suppress-duplicatesnil, suppress duplicates.gnus-save-duplicate-listnil, save the list of duplicates to a file.
This will make startup and shutdown take longer, so the default
is nil. However, this means that only duplicate
articles read in a single Gnus session are
suppressed.gnus-duplicate-list-lengthMessage-IDs to keep in the
duplicate suppression list. The default is 10000.gnus-duplicate-fileIf you have a tendency to stop and start Gnus often, setting
gnus-save-duplicate-list to t is
probably a good idea. If you leave Gnus running for weeks on end,
you may have it nil. On the other hand, saving the
list makes startup and shutdown much slower, so that means that
if you stop and start Gnus often, you should set
gnus-save-duplicate-list to nil. Uhm.
I'll leave this up to you to figure out, I think.